#include <bits/stdc++.h>
using namespace std;
int n;
const int N=3005;
const int INF=0x3f3f3f3f;
int a[N];
int c[N];
int dp[N][4];
int main(void){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        scanf("%d",&c[i]);
    }
    memset(dp,INF,sizeof(dp));
    for(int i=0;i<n;i++){
        dp[i][1]=c[i];
    }
    for(int i=1;i<n;i++){
        for(int j=0;j<i;j++){
            if(a[j]<a[i]){
                dp[i][2]=min(dp[i][2],dp[j][1]+c[i]);
            }
        }
    }
    // for(int i=0;i<n;i++){
    //     printf("%d ",dp[i][1]);
    // }
    // printf("\n");
    // for(int i=0;i<n;i++){
    //     printf("%d ",dp[i][2]);
    // }
    // printf("\n");
    // for(int i=0;i<n;i++){
    //     printf("%d ",dp[i][3]);
    // }
    // printf("\n");
    int ans=INF;
    for(int i=2;i<n;i++){
        for(int j=1;j<i;j++){
            if(dp[j][2]!=INF && a[j]<a[i]){
                dp[i][3]=min(dp[i][3],dp[j][2]+c[i]);
                //printf("%d %d %d\n",i,j,dp[i][3]);
            }
        }
        ans=min(ans,dp[i][3]);
    }
    if(ans==INF){
        printf("-1\n");
        return 0;
    }
    printf("%d\n",ans);
    return 0;
}